home *** CD-ROM | disk | FTP | other *** search
- import javax.microedition.lcdui.Canvas;
- import javax.microedition.lcdui.Command;
- import javax.microedition.lcdui.CommandListener;
- import javax.microedition.lcdui.Displayable;
- import javax.microedition.lcdui.Font;
- import javax.microedition.lcdui.Graphics;
-
- class MyCanvas extends Canvas implements CommandListener {
- // $FF: renamed from: g2 javax.microedition.lcdui.Graphics
- private Graphics field_0;
- static int gLT = 20;
- static int gRT = 24;
- static int gCT = 17;
- // $FF: renamed from: wY int
- private int field_1 = ((Canvas)this).getHeight();
- // $FF: renamed from: wX int
- private int field_2 = ((Canvas)this).getWidth();
- private Command cmExit = new Command("Exit", 1, 1);
- private Command cmInfo = new Command("Info", 1, 0);
- private Calc midlet;
- private String txt = "Calc v09";
- // $FF: renamed from: mf MathFunc
- private MathFunc field_3 = new MathFunc();
- private String stERR = ".ERR.";
- private String stOut = "0";
- private byte bDot = 0;
- // $FF: renamed from: L1 long
- private long field_4;
- // $FF: renamed from: LM long
- private long field_5;
- private byte bOpr;
- private long _c180 = 3019898880L;
- private long _c10 = 167772160L;
- private long _c1 = 16777216L;
- static byte MAX_KEYS = 2;
- static byte MAX_LEN = 12;
- static byte C_DOT = 20;
- static byte C_EQU = 21;
- static byte C_X2 = 30;
- static byte C_SQRT = 31;
- static byte C_FACT = 32;
- static byte C_XY = 33;
- static byte C_LOG = 34;
- static byte C_LN = 35;
- static byte C_SIN = 36;
- static byte C_COS = 37;
- static byte C_TAN = 38;
- static byte C_ASN = 39;
- static byte C_ACS = 40;
- static byte C_ATN = 41;
- static byte C_NEG = 42;
- static byte C_ADD = 43;
- static byte C_SUB = 44;
- static byte C_MUL = 45;
- static byte C_DIV = 46;
- static byte C_PCT = 47;
- static byte C_MPL = 48;
- static byte C_MM = 49;
- static byte C_MMC = 50;
- static byte C_MMR = 51;
- static byte C_ALOG = 52;
- static byte C_PI = 53;
- static byte C_INV = 54;
- static byte C_EXP = 55;
- static byte[][] cdKeys;
- static String[][] stKeys;
- private byte keyMode = 0;
- private Font fDig = Font.getFont(0, 1, 16);
- private Font fKey = Font.getFont(64, 0, 8);
-
- public MyCanvas(Calc var1) {
- this.midlet = var1;
- ((Displayable)this).addCommand(this.cmInfo);
- ((Displayable)this).addCommand(this.cmExit);
- ((Displayable)this).setCommandListener(this);
- this.field_4 = MathFunc.toFP(0L);
- this.field_5 = 0L;
- this.bOpr = 0;
- }
-
- public void dOut(int var1) {
- int var3 = this.stOut.indexOf(46);
- String var2;
- if (var3 >= 0) {
- var2 = this.stOut;
- } else {
- var2 = this.stOut + ".";
- }
-
- int var4 = var2.length();
- boolean var5;
- if (var2.charAt(0) != '-') {
- var5 = false;
- } else {
- var5 = true;
- --var4;
- --var3;
- }
-
- if (var4 > MAX_LEN + 1) {
- if (var3 >= 0 && var3 <= MAX_LEN + 1) {
- var3 = MAX_LEN + 1;
- if (var5) {
- ++var3;
- }
-
- var2 = var2.substring(0, var3);
- } else {
- var2 = this.stERR;
- }
- }
-
- if (var1 >= 1) {
- this.field_0.setColor(255, 255, 255);
- this.field_0.fillRect(1, 1, this.field_2 - 2, 22);
- this.field_0.setColor(0, 0, 0);
- this.field_0.drawString(var2, this.field_2 - 3, 3, gRT);
- if (var1 > 1) {
- this.bDot = -1;
- }
- }
-
- }
-
- public void paint(Graphics var1) {
- this.field_0 = var1;
- var1.setColor(0, 0, 0);
- var1.drawRect(0, 0, this.field_2 - 1, 24);
- var1.setFont(this.fKey);
- int var5 = 26;
- int var6 = 0;
-
- for(int var2 = 1; var2 <= 4; ++var2) {
- int var4 = 0;
-
- for(int var3 = 1; var3 <= 3; ++var3) {
- var1.setColor(255, 255, 255);
- var1.fillRect(var4, var5, 30, 11);
- var1.setColor(0, 0, 0);
- var1.drawString(stKeys[this.keyMode][var6++], var4 + 16, var5 + 2, gCT);
- var1.drawRect(var4, var5, 30, 11);
- var4 += 32;
- }
-
- var5 += 13;
- }
-
- var1.setFont(this.fDig);
- this.dOut(1);
- }
-
- public void keyPressed(int var1) {
- byte var7 = 0;
- if (var1 == -60) {
- var7 = C_EQU;
- }
-
- if (var1 <= 0 && var7 == 0) {
- switch (var1) {
- case -12:
- if (this.keyMode != 0) {
- this.keyMode = 0;
- ((Canvas)this).repaint();
- return;
- }
-
- if (this.bDot < 0) {
- this.stOut = "0";
- this.dOut(2);
- } else {
- byte var8 = (byte)this.stOut.length();
- if (var8 >= 3 && this.stOut.charAt(var8 - 2) == '.') {
- this.bDot = 0;
- --var8;
- }
-
- if (var8 != 1 && (var8 != 2 || this.stOut.charAt(0) != '-')) {
- this.stOut = this.stOut.substring(0, var8 - 1);
- } else {
- this.stOut = "0";
- }
-
- this.dOut(1);
- }
-
- return;
- case -11:
- if (this.keyMode == MAX_KEYS) {
- this.keyMode = 0;
- } else {
- ++this.keyMode;
- }
- break;
- case -1:
- if (this.keyMode == 0) {
- this.keyMode = MAX_KEYS;
- } else {
- --this.keyMode;
- }
- break;
- default:
- return;
- }
-
- ((Canvas)this).repaint();
- } else {
- byte var3;
- if (var7 == 0) {
- int var2;
- if (var1 >= 49 & var1 <= 57) {
- var2 = var1 - 49;
- } else if (var1 == 48) {
- var2 = 10;
- } else if (var1 == 42) {
- var2 = 9;
- } else {
- var2 = 11;
- }
-
- var3 = cdKeys[this.keyMode][var2];
- } else {
- var3 = var7;
- }
-
- if (this.keyMode != 0) {
- this.keyMode = 0;
- ((Canvas)this).repaint();
- }
-
- MathFunc.ERROR = 0;
- if (var3 >= 0 && var3 <= 9) {
- if (this.bDot < 0) {
- this.stOut = "";
- this.bDot = 0;
- }
-
- byte var4 = (byte)this.stOut.length();
- if (var4 < MAX_LEN || var4 == MAX_LEN && this.stOut.charAt(0) == '-') {
- if (this.stOut == "0" && this.bDot == 0) {
- if (var3 == 0) {
- return;
- }
-
- this.stOut = "" + var3;
- } else if (this.bDot == 1) {
- this.stOut = this.stOut + "." + var3;
- this.bDot = 2;
- } else {
- this.stOut = this.stOut + var3;
- }
-
- this.dOut(1);
- }
-
- } else if (var3 == C_DOT) {
- if (this.bDot == 0) {
- this.bDot = 1;
- } else if (this.bDot < 0) {
- this.stOut = "0";
- this.bDot = 1;
- this.dOut(1);
- }
-
- } else if (var3 == C_NEG) {
- if (this.stOut.charAt(0) != '-') {
- this.stOut = "-" + this.stOut;
- } else {
- this.stOut = this.stOut.substring(1, this.stOut.length());
- }
-
- this.dOut(1);
- } else {
- long var5 = MathFunc.toFP(this.stOut);
- if (var3 == C_SIN) {
- var5 = MathFunc.sin(MathFunc.mul(MathFunc.PI, MathFunc.div(var5, this._c180)));
- } else if (var3 == C_COS) {
- var5 = MathFunc.cos(MathFunc.mul(MathFunc.PI, MathFunc.div(var5, this._c180)));
- } else if (var3 == C_TAN) {
- var5 = MathFunc.tan(MathFunc.mul(MathFunc.PI, MathFunc.div(var5, this._c180)));
- } else if (var3 == C_LOG) {
- var5 = MathFunc.div(MathFunc.log(var5), MathFunc.log(this._c10));
- } else if (var3 == C_ALOG) {
- var5 = MathFunc.pow(this._c10, var5);
- } else if (var3 == C_X2) {
- var5 = MathFunc.mul(var5, var5);
- } else if (var3 == C_SQRT) {
- var5 = MathFunc.sqrt(var5);
- } else if (var3 == C_PI) {
- var5 = MathFunc.PI;
- } else if (var3 == C_FACT) {
- var5 = MathFunc.fact(var5);
- } else if (var3 == C_INV) {
- var5 = MathFunc.div(this._c1, var5);
- } else if (var3 == C_ASN) {
- var5 = MathFunc.mul(this._c180, MathFunc.div(MathFunc.asin(var5), MathFunc.PI));
- } else if (var3 == C_ACS) {
- var5 = MathFunc.mul(this._c180, MathFunc.div(MathFunc.acos(var5), MathFunc.PI));
- } else if (var3 == C_ATN) {
- var5 = MathFunc.mul(this._c180, MathFunc.div(MathFunc.atan(var5), MathFunc.PI));
- } else if (var3 == C_LN) {
- var5 = MathFunc.log(var5);
- } else if (var3 == C_EXP) {
- var5 = MathFunc.exp(var5);
- } else if (var3 == C_MM) {
- this.field_5 = var5;
- } else if (var3 == C_MPL) {
- this.field_5 += var5;
- } else if (var3 == C_MMC) {
- this.field_5 = 0L;
- } else if (var3 == C_MMR) {
- var5 = this.field_5;
- } else {
- if (this.bOpr != 0) {
- if (this.bOpr == C_ADD) {
- this.field_4 += var5;
- } else if (this.bOpr == C_SUB) {
- this.field_4 -= var5;
- } else if (this.bOpr == C_MUL) {
- this.field_4 = MathFunc.mul(this.field_4, var5);
- } else if (this.bOpr == C_DIV) {
- this.field_4 = MathFunc.div(this.field_4, var5);
- } else if (this.bOpr == C_XY) {
- this.field_4 = MathFunc.pow(this.field_4, var5);
- } else {
- this.field_4 = var5;
- }
- } else {
- this.field_4 = var5;
- }
-
- this.bOpr = var3;
- var5 = this.field_4;
- }
-
- if (MathFunc.ERROR > 0) {
- this.stOut = this.stERR;
- } else {
- this.stOut = MathFunc.toString(var5, 5);
- }
-
- this.dOut(2);
- }
- }
- }
-
- public void commandAction(Command var1, Displayable var2) {
- if (var1 == this.cmExit) {
- this.midlet.exitMIDlet();
- } else if (var1 == this.cmInfo) {
- this.midlet.showInfo();
- }
-
- }
-
- static {
- cdKeys = new byte[][]{{1, 2, 3, 4, 5, 6, 7, 8, 9, C_DOT, 0, C_NEG}, {C_SUB, C_MMC, C_X2, C_ADD, C_MMR, C_SQRT, C_DIV, C_MPL, C_XY, C_MUL, C_MM, C_EQU}, {C_LOG, C_ALOG, C_FACT, C_LN, C_EXP, C_PI, C_SIN, C_COS, C_TAN, C_ASN, C_ACS, C_ATN}};
- stKeys = new String[][]{{"1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "0", "+/-"}, {"-", "MC", "x^2", "+", "MR", "sqrt", "/", "M+", "x^y", "*", "M", "="}, {"log", "alog", "n!", "ln", "exp", "PI", "sin", "cos", "tan", "asn", "acs", "atn"}};
- }
- }
-